1978
12706
Csak kezdő vagyok a Swift kódolásban. Az ötletem nagyon egyszerű, ami egy alkalmazás két gombbal. Ha rákattint, a szövegmező megváltoztatja a szövegét.
A Main.StoryBoard-ban hozzáadok egy szövegmezőt és két gombot.
A ViewController.swift fájlban. Így írom:
importálja az UIKit
class ViewController: UIViewController {
@IBOutlet gyenge var mező: UITextField!
@IBOutlet gyenge var gomb: UIButton!
@IBOutlet gyenge var gomb2: UIButton!
@IBAction func action1 (_ küldő: UIButton) {
textfield.text = "éppen rákattintott a gombra1"
}
@IBAction func action2 (_ küldő: UIButton) {
textfield.text = "csak a 2. gombra kattintott"
}
}
Állítólag minden rendben van. Ugyanakkor megjelenik egy hiba, amely a következőket mutatja:
thread1: jel SIGABRT
fájlban AppDelegate.swift sor:
class AppDelegate: UIResponder, UIApplicationDelegate
Mi a baj a kódommal? 
A probléma megoldásához először tisztítsa meg a projektet, majd építse újra.
A projekt megtisztításához lépjen a MenuBar: Product -> Clean elemre
Ezután a projekt újjáépítéséhez kattintson a Futtatás gombra a szokásos módon.
|
SIGABRT hibaüzenetet kap, ha van csatlakoztatva az aljzat. Kattintson a nézetvezérlőre a storyboardban, és lépjen az oldalsó panel csatlakozásaihoz (a nyíl szimbólum). Nézze meg, van-e ott egy extra aljzata, másolata vagy nincs-e csatlakoztatva. Ha nem ez az, akkor talán nem megfelelően csatlakoztatta az aljzatokat a kódjához.
Csak ne feledje, hogy a SIGABRT akkor történik, amikor egy olyan kimenetet (gombot, nézetet, szövegmezőt stb.) Próbál meg hívni, amely nincs.
|
Számomra ez nem volt outlet. Megoldottam a problémát azzal, hogy a hibára mentem, és elolvastam, amit mondott. (Szintén Noob ..)
Ez volt a hiba:
És a megoldás itt volt:
Csak görgessen felfelé a kimenetben, és kiderül a hiba.
|
Az ilyen típusú hibák gyakori oka az, hogy megváltoztathatta az IBOutlet vagy az IBAction nevét, ezt egyszerűen ellenőrizheti a forráskód megnyitásával.
Kattintson a main.storyboard elemre, majd válassza a Megnyitás másként lehetőséget
majd válassza ki a forráskódot
forráskód megnyílik
majd ellenőrizze, hogy van-e az iboutlet vagy az ibaction neve, amelyet megváltoztatott, ha van, válassza ki az alkatrészt, és törölje, majd hozza létre újra az iboutlet vagy ibaction fájlt.
Ez megoldja a problémát
|
Esetemben nem csak az AppDelegate összeomlásakor kaptam hibát, és törölnöm kellett a következő opciót: OS_ACTIVITY_MODE, majd az .xib fájlomban megtalálhattam az igazi összeomlás okát
Remélem, ez is segíthet neked :)
|
Nekem is ugyanaz volt a problémám. Készítettem egy gombot a storyboardban, és csatlakoztattam a ViewControllerhez, majd később töröltem a gombot. Tehát a kapcsolat még mindig megvolt, de a gomb nem volt, ezért ugyanazt a hibát kaptam, mint te.
Megjavítani:
Lépjen a kapcsolatellenőrhöz (a nyíl a jobb felső sarokban, a forgatókönyvön), és törölje a fel nem használt kapcsolatokat.
|
Ha ezzel belefut az Xcode 10-be, akkor az építkezés előtt tisztítania kell. Vagy váltson a régi build rendszerre. Fájl -> Munkaterület beállításai ... -> Rendszer felépítése: Régi rendszer.
|
Az én esetemben semmiféle napló nem volt.
Az én hibám az volt, hogy egy nézetvezérlőt nyomtam egy navigációs verembe, amely már a navigációs verem része volt.
|
Néha akkor is előfordul, ha a függvényt csak a főszálban kell végrehajtani, így javíthatja úgy, hogy a fő szálhoz rendeli az alábbiak szerint: -
DispatchQueue.main.async {
a kódod itt
}
|
Számomra ez a hiba azért volt, mert volt egy előkészítési szakaszom, amely nem volt alkalmazható a készülő szakaszra.
Hosszú történet:
felülbírálja a func előkészítést (a szegmenshez: UIStoryboardSegue, küldő: Van?) {
legyen gosetup = segue.célzás as! Frissítés
gosetup.wherefrom = updatestring
}
Ez minden szegmensnél megtörtént, amikor csak egyre szólt. Tehát létrehozok egy logikai értéket, és abba helyeztem a gosetup-ot.
|
Ez nagyon gyakori hiba, és több okból is előfordulhat. A leggyakoribb az, amikor a storyboardban egy nézetvezérlőhöz csatlakoztatott IBOUTLET / IBACTION törlődik a gyors fájlból, de nem a storyboardból. Ha nem ez a helyzet, akkor használja az alsó eszköztár naplóját, hogy megtudja, mi a hiba, és diagnosztizálja azt. Töréspontok és hibakeresés segítségével könnyebben megtalálhatja a hibát.
A hiba kijavításához használja ezt a cikket, amelyet a Google-on találtam: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode
|
Az én esetemben az RxSwift-et használtam a kereséshez.
Az onNext módszeren belül folyamatosan használtam egy adott osztály megosztott példányát, ami valószínűleg elérhetetlenné tette (Mutex).
Ügyeljen arra, hogy az ilyen eseteket csak körültekintően kezelje, ha feltétlenül szükséges.
Esetemben előzőleg használtam néhány változót a megosztott példány metódusainak visszatérési értékeinek biztonságos (és egymás utáni) tárolásához, és újrafelhasználtam őket a Next blokkban.
|
Nekem is ugyanaz volt a problémám. Esetemben csak felülírtam a fájlt
GoogleService-Info.plist
ezen az úton:
Platform \ ios \ YOUR_APP_NAME \ Resources \ Resources
Esetemben a fájlok adatok nélkül voltak jelen.
|
Nagyon aktív kérdés. Nyerjen 10 hírnevet a kérdés megválaszolásához. A jó hírnév követelménye megvédi ezt a kérdést a spamektől és a válaszadás elutasításától.
Nem a keresett válasz? Böngésszen az ios gyors címkével ellátott többi kérdésben, vagy tegye fel saját kérdését.